﻿using ConfExpert.Forms.Base;

using DevExpress.XtraEditors;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraRichEdit.API.Word;
using DevTeam;

using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace ConfExpert.Forms.Du4
{
    public partial class KesimGecmisi : XForm
    {
        public KesimGecmisi()
        {
            InitializeComponent();
        }

        BindingSource bs;
        Timer timer = new Timer();

        private void KesimGecmisi_Load(object sender, EventArgs e)
        {

            //this.panelControl1.Visible = false;

            bs = new BindingSource(ds, "V_Du4Kesilen");

            GetDetails("V_Du4Kesilen", "GetDu4KesimGecmisi", new DateTime(2000, 1, 1));

            InitGridView(gv, bs);


            gv.MakeColumnInvisible("PRO");
            gv.Columns["KesilenTarih"].DisplayFormat.FormatString = "dd/MM/yyyy dddd HH:mm:ss";
            gv.AddSummary("KesilenMiktar");
            gv.BestFitColumns();
            gv.MoveLast();

            timer.Interval = 10 * 1000;
            timer.Enabled = true;
            timer.Tick += new EventHandler(timer_Tick);
            timer.Start();

            gv.OptionsView.AllowCellMerge = true;
            gv.CellMerge += new CellMergeEventHandler(gv_CellMerge);

            btnGunluk.ItemClick += btnGunluk_ItemClick;
            btnGuncelle.ItemClick += btnGuncelle_ItemClick;

            List<int> allow = new List<int>();
            allow.AddRange(new int[] { 17, 94, 53 });

            if (AmI(allow.ToArray()))
            {
                GridManager gm = GridManager.GetManager(gv);
                gm.GridMenu.AddMenu("Kaydı iptal et", btnIptal_Click);
                gm.GridMenu.AddMenu("Manual kes", btnManualKes_Click);
            }
        }

        void btnGuncelle_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            //ds.V_Du4Cikan.Clear();
            DateTime latestDate = (DateTime)ds.V_Du4Kesilen.Compute("max(KesilenTarih)", "");
            GetDetails("V_Du4Kesilen", "GetDu4KesimGecmisi", latestDate);
        }

        void btnGunluk_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            using (GunlukKesim gk = new GunlukKesim())
                gk.ShowDialog();
        }


        void btnManualKes_Click(object sender, EventArgs e)
        {
            using (ManualKesim mk = new ManualKesim())
                mk.ShowDialog();
            ds.V_Du4Kesilen.Clear();
            GetDetails("V_Du4Kesilen", "GetDu4KesimGecmisi", DateTime.Now.AddYears(-1));
        }

        void btnIptal_Click(object sender, EventArgs e)
        {
            if (gv.FocusedRowHandle > -1)
            {
                int Du4KesilenId = (int)gv.GetFocusedRowCellValue("Du4KesilenId");
                DialogResult dr = XtraMessageBox.Show(string.Format("{0} ID'li satır iptal edilecek. Onaylıyor musunuz?", Du4KesilenId), "İptal Onay", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (dr == System.Windows.Forms.DialogResult.Yes)
                {
                    Session.DataManager.ExecuteNonQuery("UpdDu4KesilenIptal", Du4KesilenId);
                    ds.V_Du4Kesilen.Clear();
                    GetDetails("V_Du4Kesilen", "GetDu4KesimGecmisi", DateTime.Now.AddYears(-1));
                    ShowInfoMessage(string.Format("{0} ID'li satır iptal edildi.", Du4KesilenId));
                }
                else
                {
                    ShowInfoMessage("Herhangi bir kayıt iptal edilmedi.");
                }

            }
            else
                ShowInfoMessage("İptal etmek istediğiniz satırda iken sağ tıklayıp iptali seçin.");


        }



        public void gv_CellMerge(object sender, CellMergeEventArgs e)
        {
            GridView view = sender as GridView;
            e.Merge = view.GetRowCellDisplayText(e.RowHandle1, e.Column) == view.GetRowCellDisplayText(e.RowHandle2, e.Column) &&
                view.GetRowCellDisplayText(e.RowHandle1, "ProductId") == view.GetRowCellDisplayText(e.RowHandle2, "ProductId") &&
                !e.Column.FieldName.Contains("Miktar");

            e.Handled = true;
        }

        void timer_Tick(object sender, EventArgs e)
        {
            timer.Stop();

            int onceki = ds.V_Du4Kesilen.Rows.Count;
            DateTime latestDate = (DateTime)ds.V_Du4Kesilen.Compute("max(KesilenTarih)", "");
            GetDetails("V_Du4Kesilen", "GetDu4KesimGecmisi", latestDate);

            if (ds.V_Du4Kesilen.Rows.Count > onceki)
                gv.MoveLast();

            timer.Start();
        }


    }
}